package com.cys.markdown.doc.project.interfaces.dao;

import com.cys.markdown.doc.project.interfaces.entity.IProjectRelUser;
import com.cys.mid.core.system.interfaces.entity.ISysUser;

import java.util.List;
import java.util.Map;

/**
 * T_PROJECT_REL_USER【项目用户关联表】 Dao接口
 *
 * @author caiyushen
 */
public interface ProjectRelUserDao {

    /**
     * 新增ProjectRelUser
     *
     * @param projectRelUser ProjectRelUser实体类
     */
    void save(IProjectRelUser projectRelUser);

    /**
     * 修改ProjectRelUser
     *
     * @param projectRelUser ProjectRelUser实体类
     */
    void update(IProjectRelUser projectRelUser);

    /**
     * 通过id物理删除ProjectRelUser
     *
     * @param id ProjectRelUser主键
     */
    void deleteById(Long id);

    /**
     * 批量物理删除ProjectRelUser
     *
     * @param ids ProjectRelUser主键数组
     */
    void deleteBatch(Long[] ids);

    /**
     * 根据用户id物理删除信息
     *
     * @param sysUserId 用户主键
     */
    void deleteBySysUserId(Long sysUserId);

    /**
     * 根据项目id物理删除信息
     *
     * @param projectInfoId 项目主键
     */
    void deleteByProjectInfoId(Long projectInfoId);

    /**
     * 根据id加载ProjectRelUser
     *
     * @param id ProjectRelUser主键
     */
    IProjectRelUser findEntityById(Long id);


    /**
     * 根据用户主键/项目主键 加载ProjectRelUser
     *
     * @param param-sysUserId     用户主键
     * @param param-projectInfoId 项目主键
     * @return ProjectRelUser实体类
     */
    IProjectRelUser findEntityByUserIdAndProId(Map param);

    /**
     * 获取ProjectRelUser列表数据
     *
     * @param map 默认空数据集
     */
    List<IProjectRelUser> findList(Map<String, Object> map);

    /**
     * 分页数据
     *
     * @param params 检索参数
     **/
    List<IProjectRelUser> findPage(Map<String, Object> params);

    /**
     * 获取ProjectRelUser列表数据
     *
     * @param map-projectInfoId 项目信息主键
     * @return 数据列表
     */
    List<ISysUser> findUserListByProjectInfoId(Map map);

    /**
     * 根据项目id获取未关联项目的用户分页列表
     *
     * @param param-sysUserName   用户名称
     * @param param-projectInfoId 项目主键
     */
    List<ISysUser> findNotRelateUserPage(Map param);
}
 



